package com.easyidea.its.facade.user;

import java.util.Collection;
import java.util.List;

import com.easyidea.its.domain.model.system.Department;
import com.easyidea.its.domain.model.system.PassPort;
import com.easyidea.its.domain.model.system.Role;
import com.easyidea.its.domain.model.system.User;
import com.easyidea.its.web.dto.SeesionUserDto;
import com.easyidea.its.web.dto.UserDto;

public interface UserMgr {
	// 登陆校验
	SeesionUserDto loginCheck(String userName, String password);

	// 根据用户名或姓名分页查用户列表
	Collection<User> getUsers(String name, String userName, int startAtIndex,
			int count);

	// 根据用户名或姓名查用户总数
	int getCountOfUser(String userName, String name);

	// 判断用户名是否重复
	boolean hasUser(Integer id, String userName);

	User getUserById(Integer id);
	/**
	 * 根据id获取用户对象
	 * 
	 * @param id
	 * @return
	 */
	User getUserByUserId(Integer id);

	/**
	 * 根据用户id删除用户
	 * 
	 * @param id
	 */
	void deleteUserById(Integer id) throws Exception;

	/**
	 * 取角色列表
	 * 
	 * @return
	 */
	List<Role> getAllRoles();
	
	void saveOrUpdateUser(User user);
	/**
	 * 获取业务管理员管理的用户数
	 * 
	 * @param userDto
	 * @return
	 */
	int getUserCountByUserDto(UserDto userDto);	
	/**
	 * 分页查找业务管理员管理的用户列表
	 * 
	 * @param userDto
	 * @param start
	 * @param pageSize
	 * @return
	 */
	Collection<User> getUsersByUserDto(UserDto userDto, int start, int pageSize);
	
	 /**
	  * 根据部门id获取该部门下的所有卡口
	  * @param deptId
	  * @return
	  */
	 Collection<PassPort> getAllPassPortByDeptId(Integer deptId);
	 /**
	  * 保存用户分配卡口数据
	  * @param userId
	  * @param passPortId
	  */
	 void saveUserPassPort(Integer userId, Integer[] passPortId);
	 
	 SeesionUserDto getUserPassPortsByUserId(Integer userId);
	 
	 Collection<Department> getAllDepartments();
}
